package com.abbcc.util.ipUtil;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class ProcessBuilderShow {
	public static List getPhysicalAddress() {
		Process p = null;
		// 物理网卡列表
		List address = new ArrayList();

		try {
			// 执行ipconfig /all命令
			p = new ProcessBuilder("ipconfig", "/all").start();
		} catch (IOException e) {
			return address;
		}
		byte[] b = new byte[1024];
		StringBuffer sb = new StringBuffer();
		// 读取进程输出值
		InputStream in = p.getInputStream();
		try {
			while (in.read(b) > 0) {
				sb.append(new String(b));
			}
		} catch (IOException e1) {
		} finally {
			try {
				in.close();
			} catch (IOException e2) {
			}
		}
		// 以下分析输出值，得到物理网卡
		String rtValue = sb.substring(0);
		int i = rtValue.indexOf("Physical Address. . . . . . . . . :");
		while (i > 0) {
			rtValue = rtValue.substring(i
					+ "Physical Address. . . . . . . . . :".length());
			address.add(rtValue.substring(0, 18));
			i = rtValue.indexOf("Physical Address. . . . . . . . . :");
		}
		return address;
	}

	public static void main(String[] args) {
		List<String> address = ProcessBuilderShow.getPhysicalAddress();
		for (String add : address) {
			System.out.printf("物理网卡地址:%s%n", add);
		}
	}
}
